package model

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
	"time"
)

type PageLimit struct {
	Start int
	Limit int
	Order string
}
type SuperAdmin struct {
	Id   int
	Name string
}

type CommonListInput struct {
	Keywords string `json:"keywords"` //关键词
	Page     int    `json:"page"`     //页码
	Limit    int    `json:"limit"`    //每页显示数
}

// UploadOption 上传限制信息
type UploadOption struct {
	AllowFiles string `json:"allowFiles"`
	MaxSize    int    `json:"maxSize"`
	RootPath   string `json:"rootPath"`
	BasePath   string `json:"basePath"`
	SubPath    string `json:"subPath"`
}

type RouteMap struct {
	KeyName     string            //关键词，根据这个关键词生成规则
	Dong        int               //类型static 0,dynamic 1
	Style       string            //类型 中间件middleware 或者 路由件route
	Prefix      string            //前缀 默认 backend
	Method      string            //方法默认
	NickRoute   string            //路径 需要则填写
	IsLogin     bool              //是否需要登陆；默认都需要登陆
	Pattern     string            //路由规则  自动生成
	Suffix      string            //后缀 do 默认后缀 或者 mhtml
	DomainLimit string            //域名限制
	Handler     interface{}       //处理器
	Desc        string            //描述
	HandlerFunc ghttp.HandlerFunc //中间件
}

type RouteMapSimple struct {
	KeyName string
	Dong    int
	Pattern string
	Method  string
	IsLogin bool
}
type TreeNode struct {
	Data     []RouteMap
	Children []*TreeNode
}
type RedisConf struct {
	Address     string
	Pass        string
	Db          int
	IdleTimeout int
}
type WechatConf struct {
	Server    string
	Appid     string
	Secret    string
	Loglevel  string
	Logfile   string
	Token     string
	HttpDebug bool
	Debug     bool
	IsCache   bool
}

// Context 请求上下文结构
type Context struct {
	Session *ghttp.Session // 当前Session管理对象
	User    *ContextUser   // 上下文用户信息
	Data    g.Map          // 自定KV变量，业务模块根据需要设置，不固定
}

// ContextUser 请求上下文中的用户信息
type ContextUser struct {
	Id         int64  // 用户ID
	Passport   string // 用户账号
	Nickname   string // 用户名称
	UserName   string //用户名
	Avatar     string // 用户头像
	IsAdmin    bool   // 是否是管理员
	RoleIds    string //role列表
	CmsRoleIds string //cms,role 列表
}

// SessionNotice 存放在Session中的提示信息，往往使用后则删除
type SessionNotice struct {
	Type    string // 消息类型
	Content string // 消息内容
}

// SessionSite 存放在Session中的提示信息，往往使用后则删除
type SessionSite struct {
	SiteId uint   // 消息类型
	Domain string // 消息内容
}

// JWTInfo cookie 数据
type JWTInfo struct {
	Token  string    `json:"token"`
	Expire time.Time `json:"expire"`
}

// WxJsSign 微信分享sign
type WxJsSign struct {
	Appid     string `json:"appid"`
	NonceStr  string `json:"nonceStr"`
	Timestamp string `json:"timestamp"`
	Url       string `json:"url"`
	Signature string `json:"signature"`
}
